<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
  <PythonExport
    Father="PropertyContainerPy"
    Name="DocumentPy"
    Twin="Document"
    TwinPointer="Document"
    Include="App/Document.h"
    Namespace="App"
    FatherInclude="App/PropertyContainerPy.h"
    FatherNamespace="App">
    <Documentation>
      <Author Licence="LGPL" Name="Juergen Riegel" EMail="FreeCAD@juergen-riegel.net" />
      <UserDocu>This is a Document class</UserDocu>
    </Documentation>
    <Methode Name="save">
      <Documentation>
        <UserDocu>Save the document to disk</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="saveAs">
      <Documentation>
        <UserDocu>Save the document under a new name to disk</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="saveCopy">
      <Documentation>
        <UserDocu>Save a copy of the document under a new name to disk</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="load">
      <Documentation>
        <UserDocu>Load the document from the given path</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="restore">
      <Documentation>
        <UserDocu>Restore the document from disk</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="isSaved">
      <Documentation>
        <UserDocu>Checks if the document is saved</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="getProgramVersion">
      <Documentation>
        <UserDocu>Get the program version that a project file was created with</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="getFileName">
      <Documentation>
        <UserDocu>
For a regular document it returns its file name property.
For a temporary document it returns its transient directory.
        </UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="mergeProject">
      <Documentation>
        <UserDocu>Merges this document with another project file</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="exportGraphviz">
      <Documentation>
        <UserDocu>Export the dependencies of the objects as graph</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="openTransaction">
      <Documentation>
          <UserDocu>openTransaction(name) - Open a new Undo/Redo transaction.

This function no long creates a new transaction, but calls
FreeCAD.setActiveTransaction(name) instead, which will auto creates a
transaction with the given name when any change happed in any opened document.
If more than one document is changed, all newly created transactions will have
the same internal ID and will be undo/redo together.
          </UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="abortTransaction">
      <Documentation>
        <UserDocu>Abort an Undo/Redo transaction (rollback)</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="commitTransaction">
      <Documentation>
        <UserDocu>Commit an Undo/Redo transaction</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="addObject" Keyword="true">
      <Documentation>
          <UserDocu>addObject(type, name=None, objProxy=None, viewProxy=None, attach=False, viewType=None)

Add an object to document

type (String): the type of the document object to create.
name (String): the optional name of the new object.
objProxy (Object): the Python binding object to attach to the new document object.
viewProxy (Object): the Python binding object to attach the view provider of this object.
attach (Boolean): if True, then bind the document object first before adding to the document
        to allow Python code to override view provider type. Once bound, and before adding to
        the document, it will try to call Python binding object's attach(obj) method.
viewType (String): override the view provider type directly, only effective when attach is False.</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="addProperty" Keyword="true">
        <Documentation>
            <UserDocu>
                addProperty(type: string, name: string, group="", doc="", attr=0, read_only=False, hidden=False) -- Add a generic property.
            </UserDocu>
        </Documentation>
    </Methode>
    <Methode Name="removeProperty">
        <Documentation>
            <UserDocu>
                removeProperty(string) -- Remove a generic property.
                Note, you can only remove user-defined properties but not built-in ones.
            </UserDocu>
        </Documentation>
    </Methode>
    <Methode Name="removeObject">
      <Documentation>
        <UserDocu>Remove an object from the document</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="copyObject">
      <Documentation>
          <UserDocu>
copyObject(object, with_dependencies=False, return_all=False)
Copy an object or objects from another document to this document.

object: can either a single object or sequence of objects
with_dependencies: if True, all internal dependent objects are copied too.
return_all: if True, return all copied objects, or else return only the copied
            object corresponding to the input objects.
          </UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="moveObject">
      <Documentation>
        <UserDocu>
moveObject(object, bool with_dependencies = False)
Transfers an object from another document to this document.

object: can either a single object or sequence of objects
with_dependencies: if True, all internal dependent objects are copied too.
        </UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="importLinks">
      <Documentation>
          <UserDocu>
importLinks(object|[object...])

Import any externally linked object given a list of objects in
this document.  Any link type properties of the input objects
will be automatically reassigned to the imported object

If no object is given as input, it import all externally linked
object of this document.
          </UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="undo">
      <Documentation>
        <UserDocu>Undo one transaction</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="redo">
      <Documentation>
        <UserDocu>Redo a previously undone transaction</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="clearUndos">
      <Documentation>
        <UserDocu>Clear the undo stack of the document</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="clearDocument">
      <Documentation>
        <UserDocu>Clear the whole document</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="setClosable">
      <Documentation>
        <UserDocu>Set a flag that allows or forbids to close a document</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="isClosable">
      <Documentation>
        <UserDocu>Check if the document can be closed. The default value is True</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="recompute">
      <Documentation>
        <UserDocu>recompute(objs=None): Recompute the document and returns the amount of recomputed features</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="mustExecute">
      <Documentation>
        <UserDocu>Check if any object must be recomputed</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="purgeTouched">
      <Documentation>
        <UserDocu>Purge the touched state of all objects</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="isTouched">
      <Documentation>
        <UserDocu>Check if any object is in touched state</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="getObject">
    <Documentation>
      <UserDocu>Return the object with the given name</UserDocu>
    </Documentation>
  </Methode>
  <Methode Name="getObjectsByLabel">
    <Documentation>
      <UserDocu>Return the objects with the given label name.
NOTE: It's possible that several objects have the same label name.</UserDocu>
    </Documentation>
  </Methode>
    <Methode Name="findObjects" Keyword="true">
    <Documentation>
            <UserDocu>findObjects([Type=string], [Name=string], [Label=string]) -&gt; list
Return a list of objects that match the specified type, name or label.
Name and label support regular expressions. All parameters are optional.</UserDocu>
    </Documentation>
  </Methode>
    <Methode Name="getLinksTo">
        <Documentation>
            <UserDocu>
getLinksTo(obj, options=0, maxCount=0): return objects linked to 'obj'

options: 1: recursive, 2: check link array. Options can combine.
maxCount: to limit the number of links returned
            </UserDocu>
        </Documentation>
    </Methode>
    <Methode Name="supportedTypes">
      <Documentation>
        <UserDocu>A list of supported types of objects</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="getTempFileName">
      <Documentation>
        <UserDocu>Returns a file name with path in the temp directory of the document.</UserDocu>
      </Documentation>
    </Methode>
    <Methode Name="getDependentDocuments">
      <Documentation>
              <UserDocu>
getDependentDocuments(sort=True)

Returns a list of documents that this document directly or indirectly links to including itself.

sort: whether to topologically sort the return list
              </UserDocu>
      </Documentation>
    </Methode>
    <Attribute Name="DependencyGraph" ReadOnly="true">
    <Documentation>
      <UserDocu>The dependency graph as GraphViz text</UserDocu>
    </Documentation>
    <Parameter Name="DependencyGraph" Type="String" />
  </Attribute>
    <Attribute Name="ActiveObject" ReadOnly="true">
      <Documentation>
        <UserDocu>The last created object in this document</UserDocu>
      </Documentation>
      <Parameter Name="ActiveObject" Type="Object" />
    </Attribute>
    <Attribute Name="Objects" ReadOnly="true">
      <Documentation>
        <UserDocu>The list of objects in this document</UserDocu>
      </Documentation>
      <Parameter Name="Objects" Type="List" />
    </Attribute>
    <Attribute Name="TopologicalSortedObjects" ReadOnly="true">
      <Documentation>
        <UserDocu>The list of objects in this document in topological sorted order</UserDocu>
      </Documentation>
      <Parameter Name="ToplogicalSortedObjects" Type="List" />
    </Attribute>
    <Attribute Name="RootObjects" ReadOnly="true">
      <Documentation>
        <UserDocu>The list of root objects in this document</UserDocu>
      </Documentation>
      <Parameter Name="RootObjects" Type="List" />
    </Attribute>
    <Attribute Name="UndoMode" ReadOnly="false">
      <Documentation>
        <UserDocu>The Undo mode of the Document (0 = no Undo, 1 = Undo/Redo)</UserDocu>
      </Documentation>
      <Parameter Name="UndoMode" Type="Int" />
    </Attribute>
    <Attribute Name="UndoRedoMemSize" ReadOnly="true">
      <Documentation>
        <UserDocu>The size of the Undo stack in byte</UserDocu>
      </Documentation>
      <Parameter Name="UndoRedoMemSize" Type="Int" />
    </Attribute>
    <Attribute Name="UndoCount" ReadOnly="true">
      <Documentation>
        <UserDocu>Number of possible Undos</UserDocu>
      </Documentation>
      <Parameter Name="UndoCount" Type="Int" />
    </Attribute>
    <Attribute Name="RedoCount" ReadOnly="true">
      <Documentation>
        <UserDocu>Number of possible Redos</UserDocu>
      </Documentation>
      <Parameter Name="RedoCount" Type="Int"/>
    </Attribute>
    <Attribute Name="UndoNames" ReadOnly="true">
      <Documentation>
        <UserDocu>A list of Undo names</UserDocu>
      </Documentation>
      <Parameter Name="UndoNames" Type="List"/>
    </Attribute>
    <Attribute Name="RedoNames" ReadOnly="true">
      <Documentation>
        <UserDocu>A List of Redo names</UserDocu>
      </Documentation>
      <Parameter Name="RedoNames" Type="List"/>
    </Attribute>
    <Attribute Name="Name" ReadOnly="true">
      <Documentation>
        <UserDocu>The internal name of the document</UserDocu>
      </Documentation>
      <Parameter Name="Name" Type="String"/>
    </Attribute>
    <Attribute Name="RecomputesFrozen">
      <Documentation>
        <UserDocu>Returns or sets if automatic recomputes for this document are disabled.</UserDocu>
      </Documentation>
      <Parameter Name="RecomputesFrozen" Type="Boolean"/>
    </Attribute>
    <Attribute Name="HasPendingTransaction" ReadOnly="true">
      <Documentation>
        <UserDocu>Check if there is a pending transaction</UserDocu>
      </Documentation>
      <Parameter Name="HasPendingTransaction" Type="Boolean"/>
    </Attribute>
  <Attribute Name="InList" ReadOnly="true">
    <Documentation>
          <UserDocu>A list of all documents that link to this document.</UserDocu>
    </Documentation>
    <Parameter Name="InList" Type="List" />
  </Attribute>
  <Attribute Name="OutList" ReadOnly="true">
    <Documentation>
          <UserDocu>A list of all documents that this document links to.</UserDocu>
    </Documentation>
    <Parameter Name="OutList" Type="List" />
  </Attribute>
  <Attribute Name="Restoring" ReadOnly="true">
    <Documentation>
          <UserDocu>Indicate if the document is restoring</UserDocu>
    </Documentation>
    <Parameter Name="Restoring" Type="Boolean" />
  </Attribute>
  <Attribute Name="Partial" ReadOnly="true">
    <Documentation>
          <UserDocu>Indicate if the document is partially loaded</UserDocu>
    </Documentation>
    <Parameter Name="Partial" Type="Boolean" />
  </Attribute>
  <Attribute Name="Importing" ReadOnly="true">
    <Documentation>
          <UserDocu>Indicate if the document is importing. Note the document will also report Restoring while importing</UserDocu>
    </Documentation>
    <Parameter Name="Importing" Type="Boolean" />
  </Attribute>
  <Attribute Name="Recomputing" ReadOnly="true">
    <Documentation>
          <UserDocu>Indicate if the document is recomputing</UserDocu>
    </Documentation>
    <Parameter Name="Recomputing" Type="Boolean" />
  </Attribute>
  <Attribute Name="Transacting" ReadOnly="true">
    <Documentation>
          <UserDocu>Indicate whether the document is undoing/redoing</UserDocu>
    </Documentation>
    <Parameter Name="Transacting" Type="Boolean" />
  </Attribute>
    <Attribute Name="OldLabel" ReadOnly="true">
        <Documentation>
            <UserDocu>Contains the old label before change</UserDocu>
        </Documentation>
        <Parameter Name="OldLabel" Type="String"/>
    </Attribute>
    <Attribute Name="Temporary" ReadOnly="true" >
        <Documentation>
            <UserDocu>Check if this is a temporary document</UserDocu>
        </Documentation>
        <Parameter Name="Temporary" Type="Boolean"/>
    </Attribute>
    <CustomAttributes />
  </PythonExport>
</GenerateModel>
